Use case: IRDA transmit in DMA mode ¶
This use case shows how to transmit IRDA data in DMA mode. In HAL2, IRDA support is handled via the HAL UART driver.
Sequence diagram ¶
Code snippet ¶
|
HAL1 |
HAL2 |
|---|---|
#define DATA_TO_SEND_SIZE 255
IRDA_HandleTypeDef hirda;
uint8_t aTxBuffer[DATA_TO_SEND_SIZE] = " **** IRDA Communication **** ";
/* Optional: register transmit-complete callback */
HAL_IRDA_RegisterCallback(&hirda, HAL_IRDA_TX_CB_ID, IRDA_TxCpltCallback);
/* Start transmit in DMA mode */
(void)HAL_IRDA_Transmit_DMA(&hirda, aTxBuffer, DATA_TO_SEND_SIZE);
|
#define DATA_TO_SEND_SIZE 255
hal_uart_handle_t huart;
uint8_t aTxBuffer[DATA_TO_SEND_SIZE] = " **** IRDA Communication **** ";
/* Optional: register transmit-complete callback */
HAL_UART_RegisterTxCpltCallback(&huart, UART_TxCpltCallback);
/* Start transmit in DMA mode */
(void)HAL_UART_Transmit_DMA(&huart, aTxBuffer, DATA_TO_SEND_SIZE);
|
Key changes ¶
HAL2 migrates from HAL_IRDA_Transmit_DMA() to HAL_UART_Transmit_DMA().
DMA completion still triggers a TX complete interrupt path, but HAL2 uses HAL_UART_IRQHandler().
Completion callback naming/parameters differ in HAL2 (byte count instead of element count).

